#include <boost/test/unit_test.hpp>
#include <boost/range/irange.hpp>
#include <boost/format.hpp>
#include <boost/unordered_map.hpp>
#include <iostream>
#include <regex>
#include <array>
#include "symbol.h"
#include "parser.h"
#include "description.h"
#include "grammar.h"
#include "generator.h"
#include "builder.h"
#include "driver.h"
#include "tester.h"
#include "test_data_IDalgo.h"
#include "test_data.h"

#define LEMONPP_PARAMETER_ASSERT(what)
//#define Tester SimpleTester

LPP_NAMESPACE_BEGIN

#if 0
BOOST_AUTO_TEST_CASE(StaticTestActions3_SimpleLambda) {
    std::cout<<"*******************  Simple Simple Lambda"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::SimpleLambda S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#elif 0
BOOST_AUTO_TEST_CASE(StaticTestActions3_IDalgo_Algebra_2) {
    std::cout<<"*******************  Simple IDalgo algebra 1"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::IDalgo_algebra_1 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
BOOST_AUTO_TEST_CASE(StaticTestActions3_IDalgo_1) {
    std::cout<<"*******************  Simple IDalgo grammar 1"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::IDalgo_1 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#elif 0
BOOST_AUTO_TEST_CASE(StaticTestActions3_IDalgo_0) {
    std::cout<<"*******************  Simple IDalgo grammar 0"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::IDalgo_0 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#elif 0
BOOST_AUTO_TEST_CASE(StaticTestActions3_WIKIPEDIA) {
    std::cout<<"*******************  Simple Wikipedia grammar 2"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Wikipedia2 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#elif 0
BOOST_AUTO_TEST_CASE(StaticTestActions3_WIKIPEDIA) {
    std::cout<<"*******************  Simple Wikipedia grammar 0"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Wikipedia0 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#elif 0
BOOST_AUTO_TEST_CASE(StaticTestActions3_Wikipedia) {
    std::cout<<"*******************  Simple Wikipedia grammar 0"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Wikipedia S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#elif 1
BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple10) {
    std::cout<<"*******************  Simple grammar 10"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple10 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#elif 0
BOOST_AUTO_TEST_CASE(StaticTestActions3_IDalgo_0) {
    std::cout<<"*******************  Simple IDalgo grammar 0"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::IDalgo_0 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}
#else
BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple1) {
    std::cout<<"*******************  Simple grammar 1"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Tested S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple_b_1) {
    std::cout<<"*******************  Simple grammar Simple_b_1"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple_b_1 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple2) {
    std::cout<<"*******************  Simple grammar 2"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple2 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple3) {
    std::cout<<"*******************  Simple grammar 3"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple3 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_SimpleI0) {
    std::cout<<"*******************  Simple grammar I0"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::SimpleI0 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple3b) {
    std::cout<<"*******************  Simple grammar 3b"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple3b S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple4) {
    std::cout<<"*******************  Simple grammar 4"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple4 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple5) {
    std::cout<<"*******************  Simple grammar 5"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple5 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple6) {
    std::cout<<"*******************  Simple grammar 6"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple6 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple7) {
    std::cout<<"*******************  Simple grammar 7"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple7 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple8) {
    std::cout<<"*******************  Simple grammar 8"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple8 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple9) {
    std::cout<<"*******************  Simple grammar 9"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple9 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Simple10) {
    std::cout<<"*******************  Simple grammar 10"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Simple10 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Wikipedia0) {
    std::cout<<"*******************  Simple wikipedia 0"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Wikipedia0 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Wikipedia1) {
    std::cout<<"*******************  Simple wikipedia 1"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Wikipedia1 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Wikipedia2) {
    std::cout<<"*******************  Simple wikipedia 2"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Wikipedia2 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Wikipedia) {
    std::cout<<"*******************  Simple grammar wikipedia"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Wikipedia S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Jambe) {
    std::cout<<"*******************  Simple grammar Jambe"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Jambe S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Jambe0) {
    std::cout<<"*******************  Simple grammar Jambe0"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::Jambe0 S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_Bison) {
    std::cout<<"*******************  Simple Bison grammar example"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::SimpleBison S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

BOOST_AUTO_TEST_CASE(StaticTestActions3_WikipediaLR) {
    std::cout<<"*******************  Simple Wikipedia LR grammar example"<< std::endl;
    StringSet set;
    LEMONPP_UNIT_TEST::SimpleWikipediaLR S;
    LEMONPP_UNIT_TEST::Tester(S,set,true);
}

#endif

LPP_NAMESPACE_END
